Ágensorientált programozás
Ágensorientált programozás (AOP) egy programozási paradigma, ahol szoftver elkészülésének középpontjában a szoftverágensek koncepciója áll. Ellentétben az objektumorientált programozással, amelynek az objektumok (metódusokat biztosít változó paraméterekkel) állnak a középpontban, míg az AOP középpontjában külsőleg meghatározott ágensek (interfészekkel és üzenetküldő képességekkel) állnak. Úgy lehet őket felfogni, mint a objektumok absztrakcióit. A üzeneteket a fogadó "ágensek" értelmezik, az ágensek osztályára jellemző módon.
Történet
[szerkesztés]Történelmileg az ágensorientált programozást, és az ötletet, hogy szoftver az ágens fogalmának középpontjába álljon, Yoav Shoham vezette be, a mesterségesintelligencia- tanulmányai során 1990-ben.[1] [2] Az ágensei azok saját paradigmájára specifikusak, mivel csak egyetlen metódusuk van, egyetlen paraméterrel. Yoav Shohamot idézve 1990-es írásából, amelyben az AOP és az OOP közötti alapvető különbségről ír:
- ... ágensorientált programozás (AOP), amely az objektumorientált programozás specializációjának tekinthető. . . .
OOP | AOP | |
---|---|---|
Alapegység | objektum | ágens |
Az alapegység állapotát meghatározó paraméterek | kötetlen | hiedelmek, elkötelezettségek, képességek, választási lehetőségek, ... |
A számítás folyamata | üzenettovábbítás és válaszmetódusok | üzenettovábbítás és válaszmetódusok |
Az üzenet típusai | kötetlen | tájékoztatás, kérés, ajánlat, ígéret, elutasítás,. . . |
A módszerekre vonatkozó korlátozások | nincs | őszinteség, következetesség,. . . |
Keretrendszerek
[szerkesztés]Számos AOP-"keretrendszer" van, más néven ágensplatformok, amelyek megvalósítják Shoham programozási paradigmáját. A következő példák szemléltetik, hogy az alapágens hogy van hello-world programként programozva.
JADE
[szerkesztés]A Java-platform egyik keretrendszere a JADE.[3][4] Itt megtalálható egy nagyon egyszerű példa[5] a kódot futtató ügynökről.
package helloworld;
import jade.core.Agent;
public class Hello extends Agent {
protected void setup() {
System.out.println("Hello World. ");
System.out.println("My name is "+ getLocalName());
}
public Hello() {
System.out.println("Constructor called");
}
}
A JADE AOP modelljének lényege, hogy API-ja támogatja a szabványos FIPA Agent kommunikációs nyelvet
Agent Speak (Jason)
[szerkesztés]Az ágensorientált fogalmak szó szerinti lefordításához a JADE-hez hasonlóan a Java és az objektumorientáltság mögött álló Agent Speak[6] (Jason) egy "természetes" nyelvet biztosít az ágensek számára.
started.
+started <- .print("Hello World. ").
GOAL
[szerkesztés]A GOAL egy ágens programozási nyelv, kognitív ágensek programozásához. A GOAL ágensei meggyőződésükből és céljaikból hoznak döntést a választások során. A nyelv biztosítja az alapvető építőelemeket a kognitív ágensek tervezéséhez és megvalósításához olyan konstrukciók programozásával, amelyek lehetővé teszik és megkönnyítik az ügynök meggyőződésének és céljainak manipulálását, valamint strukturálják döntéshozatalát. A nyelv intuitív programozási keretrendszert nyújt, józan ész vagy gyakorlati érvelés alapján.
SARL nyelv
[szerkesztés]A SARL [7] ( SARL webhely ) biztosítja az multi-ágens rendszerek programozásának alapvető absztrakcióját. Szkriptszerű szintaxist használ (Amelyet Scala és Ruby ihletett).
package helloworld
import io.sarl.core.Initialize
agent HelloWorldAgent {
on Initialize {
println("Hello World.")
}
}
Köztes szoftver
[szerkesztés]A moduláris vagy bővíthető AOP-támogatás megvalósításának egyik módja a standard AOP API-k meghatározása a köztes szoftver funkcióihoz, amelyek maguk is szoftverágensként valósulnak meg. Például egy címtárszolgáltatás megvalósítható FIPA-címtárszervezőként vagy DF-szoftverágensként; Az életciklus-menedzsment az ágensek elindításához, leállításához, felfüggesztéséhez és folytatásához FIPA Agent Management Service vagy AMS ágensként valósítható meg. [8] Az AOP megközelítés előnye, hogy támogatja az alkalmazások, szolgáltatások és hálózatok különböző felhasználói és szolgáltatói közötti dinamikusabb szerepeket. Például hagyományosan a hálózatokat és szolgáltatásokat általában az ügyfél nevében a hálózat és a szolgáltató irányította, és egyetlen virtuális hálózati szolgáltatásként kínálták, de maguk az ügyfelek is egyre inkább fel vannak hatalmazva arra, hogy integrálják és kezeljék saját szolgáltatásaikat. Ezt AOP-n és API-n keresztül lehet elérni a köztes ágensek számára, amelyek rugalmasan és dinamikusan képesek kezelni a kommunikációt. [9]
Jegyzetek
[szerkesztés]- ↑ Shoham, Y.. Agent-Oriented Programming. Stanford University: Computer Science Department (1990)
- ↑ Shoham (1993). „Agent-Oriented Programming”. Artificial Intelligence 60 (1), 51–92. o. DOI:10.1016/0004-3702(93)90034-9.
- ↑ Bellifeminee, Fabio (2001). „JADE: a FIPA2000 compliant agent development environment”. Proceedings of the fifth international conference on Autonomous agents: 216–217. doi:10.1145/375735.376120.
- ↑ https://web.archive.org/web/20100621141053/http://jade.tilab.com/
- ↑ https://web.archive.org/web/20110702083510/http://rootdev.nl/blog/article/aop_jade_configure_in_eclipse_and_netbeans
- ↑ Anand S. Rao, 1996. AgentSpeak(L): BDI Agents Speak Out in a Logical Computable Language. Proceedings of Seventh European Workshop on Modelling Autonomous Agents in a Multi-Agent World (MAAMAW-96).
- ↑ Rodriguez, Sebastian; Gaud, Nicolas; Galland, Stéphane (2014). " SARL: A General-Purpose Agent-Oriented Programming Language, 2014 IEEE/WIC/ACM International Joint Conferences on Web Intelligence (WI) and Intelligent Agent Technologies (IAT), 103–110. o.. DOI: 10.1109/wi-iat.2014.156 (2014). ISBN 978-1-4799-4143-8
- ↑ Poslad, S (2007). „Specifying Protocols for Multi-agent System Interaction”. ACM Transactions on Autonomous and Adaptive Systems 2 (4), 15–es. o. DOI:10.1145/1293731.1293735.
- ↑ Poslad, S. Agent-oriented middleware for integrating customer network services. In: Software Agents for Future Communication Systems, Hayzelden A, Bigham J Eds., 221–242. o.. DOI: 10.1007/978-3-642-58418-3_9 (1999)
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben az Agent-oriented programming című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.